﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using LPrisaMVC.Entities;
using LPrisaMVC.WebMVC4;
using LPrisaMVC.DAO;


namespace LPrisaMVC.WebMVC4.Tests.Controllers
{
    [TestClass]
    public class ImpuestoControllerTest
    {        
    
        [TestMethod]
        public void GetAllFromImpuesto()
        {
            ImpuestoDAO impDAO = new ImpuestoDAO();
            List<IMPUESTO> actual;
            actual = impDAO.GetAllFromImpuesto();
            Assert.IsTrue(actual.Count > 1);
        }

        [TestMethod]
        public void GetFromImpuestoById()
        {
            ImpuestoDAO impDAO = new ImpuestoDAO();
            int id = 3000;
            IMPUESTO actual;
            actual = impDAO.GetFromImpuestoById(id);
            Assert.IsTrue(actual.Id == 3000);
        }

        [TestMethod]
        public void GetAllFromImpuestoByDescripcion()
        {
            ImpuestoDAO impDAO = new ImpuestoDAO();
            var criterio = "boleta";
            List<IMPUESTO> actual;
            actual = impDAO.GetFromImpuestoByDescripcion(criterio);
            Assert.IsTrue(actual.Count >= 1);
            //Assert.IsNotNull(actual);
        }

        [TestMethod]
        public void AddImpuesto()
        {
            ImpuestoDAO impDAO = new ImpuestoDAO();
            var porcentaje = Convert.ToDecimal("0.5");

            var ListEsperado = (List<IMPUESTO>)impDAO.GetAllFromImpuesto();
            IMPUESTO impuesto = new IMPUESTO()
            {
                Descripcion = "NUEVA IMP",
                Porcentaje = porcentaje
            };
            impDAO.AddImpuesto(impuesto);
            var ListaCTUAL = (List<IMPUESTO>)impDAO.GetAllFromImpuesto();
            Assert.AreEqual(ListEsperado.Count + 1, ListaCTUAL.Count, "Error ");
        }

        [TestMethod]
        public void UpdateImpuesto()
        {
            ImpuestoDAO target = new ImpuestoDAO();
            var ID = 3000;
            var DESCRIPCION = "IMPUESTO ACTUALIZADO";
            var PORCENTAJE = Convert.ToDecimal("0.55");
            IMPUESTO impuesto = new IMPUESTO()
            {
                Id = ID,
                Descripcion = DESCRIPCION,
                Porcentaje = PORCENTAJE
            };
            target.UpdateImpuesto(impuesto);
            var existe = target.GetFromImpuestoById(ID);
            Assert.IsTrue(existe.Descripcion == DESCRIPCION);
        }

        [TestMethod]
        public void RemoveImpuesto()
        {
            ImpuestoDAO target = new ImpuestoDAO();
            var id = 6000;
            target.RemoveImpuesto(id);
            var existe = target.GetFromImpuestoById(id);
            Assert.IsTrue(existe == null);

        }
    }
}
